package com.chushouya.product.service.admin;


import com.general.framework.core.schema.PageResult;
import com.chushouya.product.dto.admin.product.ProductDetailDTO;
import com.chushouya.product.dto.admin.product.ProductListDTO;
import com.chushouya.product.dto.admin.product.query.ProductQuery;

/**
 * 商品业务
 */
public interface ProductService {

    /**
     * 分页查询商品
     *
     * @param query 参数
     * @return 分页对象
     */
    PageResult<ProductListDTO> selectProductPageResult(ProductQuery query);

    /**
     * 根据ID查询商品
     *
     * @param productId 商品Id
     * @return 商品详情
     */
    ProductDetailDTO getProductDetail(Long productId);

    /**
     * 是否存在商品关联品牌
     *
     * @param brandId 品牌ID
     */
    Boolean hasProductBindBrand(Long brandId);

    /**
     * 同步品牌名称
     */
    void syncBrandName(Long brandId, String brandName);

    /**
     * 是否存在商品关联分类
     *
     * @param categoryId 分类ID
     */
    Boolean hasProductBindCategory(Long categoryId);

    /**
     * 是否存在商品关联系列
     *
     * @param seriesId 分类ID
     */
    Boolean hasProductBindSeries(Long seriesId);

    /**
     * 商家上架
     */
    void setOnline(Long productId);

    /**
     * 商家下架
     */
    void setOffline(Long productId);

    /**
     * 删除商品
     */
    void removeProduct(Long productId);

    /**
     * 编辑商品排序
     *
     * @param productId 商品id
     * @param sort      排序值
     */
    void editProductSort(Long productId, Integer sort);

    boolean isNewProduct(Long productId);

    void syncProductMaxPrice(Long productId);
}
